package com.itheima.activiti;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

import java.util.List;

/**
 * 三
 * 查询当前用户的任务列表
 */
public class ActivitiTaskQuery {

    //wangwu完成自己任务列表的查询
//    public static void main(String[] args) {
//        //1.得到ProcessEngine对象
//        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//
//        //2.得到TaskService对象
//        TaskService taskService = processEngine.getTaskService();
//
//        //3.根据流程定义的key,负责人assignee来实现当前用户的任务列表查询
//        Task task = taskService.createTaskQuery()
//                .processDefinitionKey("_12")
//                .taskAssignee("wangwu")
//                .singleResult();
//
//        //4.任务列表的展示
//        System.out.println("流程实例ID:"+task.getProcessInstanceId());
//        System.out.println("任务ID:"+task.getId());  //5002
//        System.out.println("任务负责人:"+task.getAssignee());
//        System.out.println("任务名称:"+task.getName());
//
//
//    }

    //lishi自己待完成的任务列表的查询
    public static void main(String[] args) {
        //1.得到ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        //2.得到TaskService对象
        TaskService taskService = processEngine.getTaskService();

        //3.根据流程定义的key,负责人assignee来实现当前用户的任务列表查询
        Task task = taskService.createTaskQuery()
                .processDefinitionKey("holidaynew")
                .taskAssignee("张三")
                .singleResult();//多个使用list

//        没有会是努力了task
        //4.任务列表的展示
            System.out.println("流程实例ID:"+task.getProcessInstanceId());
            System.out.println("任务ID:"+task.getId());  //5002
            System.out.println("任务负责人:"+task.getAssignee());
            System.out.println("任务名称:"+task.getName());


//通过任务拿到实例id，通过实例id查询到流程实例对象  获取bussinesskey
        RuntimeService runtimeService = processEngine.getRuntimeService();
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
        String businessKey = processInstance.getBusinessKey();
        System.out.println("业务标识:"+businessKey);
    }


    //zhangsan任务列表的查询
//    public static void main(String[] args) {
//        //1.得到ProcessEngine对象
//        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//
//        //2.得到TaskService对象
//        TaskService taskService = processEngine.getTaskService();
//
//        //3.根据流程定义的key,负责人assignee来实现当前用户的任务列表查询
//        List<Task> taskList = taskService.createTaskQuery()
//                .processDefinitionKey("_12")
//                .taskAssignee("zhangsan")
//                .list();
//
//        //4.任务列表的展示
//        for(Task task :taskList){
//            System.out.println("流程实例ID:"+task.getProcessInstanceId());
//            System.out.println("任务ID:"+task.getId());
//            System.out.println("任务负责人:"+task.getAssignee());
//            System.out.println("任务名称:"+task.getName());
//        }
//
//    }
}
